package Ubicacion;

import java.util.Random;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

import Excepciones.FueraDeLimites;
import Juego.SerializablePropia;
import MapaStuff.Hectarea;

public abstract class Direccion implements SerializablePropia {

	public abstract Hectarea hectareaSiguiente(Hectarea unaHectarea) throws FueraDeLimites;

	public static Direccion direccionAlAzar() {
			Direccion nuevaDireccion = null;
			Random gen = new Random();
			int i = gen.nextInt(12);
			switch (i){
			case 0: nuevaDireccion = new Norte();break;
			case 1:	nuevaDireccion = new Sur();break;
			case 2:	nuevaDireccion = new Este();break;
			case 3:	nuevaDireccion = new Oeste();break;
			case 4:	nuevaDireccion = new Noreste();break;
			case 5:	nuevaDireccion = new Noroeste();break;
			case 6:	nuevaDireccion = new Sureste();break;
			case 7:	nuevaDireccion = new Suroeste();break;
			case 8:	nuevaDireccion = new ZigZagNorte();break;
			case 9:	nuevaDireccion = new ZigZagSur();break;
			case 10:nuevaDireccion = new ZigZagEste();break;
			case 11:nuevaDireccion = new ZigZagOeste();break;
			}
			return nuevaDireccion;			
		}
	
	public Element serializar(Document doc){
		Element ele=doc.createElement("Direcion");
		return ele;
		
	}
	public  static Direccion hidratar(Node node){
		return (Direccion) SerializablePropia.hidratar(node);
	}
}
